¿Cómo es [1,2,3]==[1,2,3] y [1,2,3]===[1,2,3] falso? Agradecería una explicación sencilla. Encontré esto mientras miraba un video de YouTube... ¿más "anomalías" como esta?
El operador == comprueba si los dos operandos hacen referencia al mismo objeto. Si bien los dos objetos (las matrices son objetos) pueden tener el mismo contenido, son instancias diferentes y, por lo tanto, la expresión es false .
Los operadores === y == comparan las matrices por referencia (es decir, la ubicación en la memoria), la manera fácil de pensar en ello es que "son matrices diferentes con los mismos valores".
Si le da un nombre a las matrices, tal vez la razón de esto sea más clara:
const arr1 = [1, 2, 3]; const arr2 = [1, 2, 3]; console.log(arr1 === arr2); Y arr1 no es la misma matriz que arr2 .
Por el contrario, esto registrará true , porque compara la misma referencia:
const arr = [1, 2, 3]; console.log(arr === arr);No son iguales porque no son lo "mismo". En js, si hace [1,2,3] almacena la matriz como una variable sin nombre. Dale un nombre, di 'r' y haz r==r y devolverá verdadero porque window.r es lo mismo que window.r. Pero window.undefinedvariable0 no es lo mismo que window.undefinedvariable1, aunque son visualmente iguales.